package com.ybzl.gateway.service;

import com.ybzl.gateway.domain.*;

import java.util.List;
import java.util.Map;


public interface IDeviceService {


    /**
     * 新增心跳
     *
     * @param deviceHeartbeatInfo
     */
    void insertHeartbeat(DeviceHeartbeatInfo deviceHeartbeatInfo);

    /**
     * 新增设备信息
     *
     * @param deviceInfo
     */
    void insertDeviceInfo(DeviceInfo deviceInfo);

    /**
     * 查询超过5分钟都没有上报数据的设备
     *
     * @return
     */
    List<Map<String, Object>> selectDeviceInfoByMinute();

    /**
     * 查询心跳
     *
     * @return
     */
    List<String> selectHeartbeatByMinute();

    /**
     * 数据入库
     *
     * @param statusList
     */
    void insertDeviceStatus(List<DeviceStatusInfo> statusList);

    /**
     * 查询设备状态
     *
     * @return
     */
    List<DeviceStatusInfo> selectDeviceStatusInfo();

    /**
     * @return
     */
    List<DeviceInfo> selectDeviceInfoBySecond();

    /**
     * 查询当前标签对应的上一个基站数据
     *
     * @param tagId
     * @return
     */
    DeviceInfo selectLastByTagId(String tagId);

    void insertTargetDeviceInfo(DeviceInfo deviceInfo);

    List<DeviceInfo> selectTargetDeviceInfoBySecond();

    /**
     * 新增或者修改beacon信息
     *
     * @param beaconId
     * @param power
     */
    void saveOrUpdate(String beaconId, Integer power, Double x, Double y);

    List<Beacon> selectBeacon();

    void insertBeaconStatus(String beaconId, int power);

    /**
     * 查询对应的房间
     * @param tagId
     * @return
     */
    Room selectRoomBYTagId(String tagId);

    void insertRoom(double x, double y, String tagId);

    /**
     * 删除对应的beacon
     * @param beaconId
     * @return
     */
    int delBeaconByTs(String beaconId);

    void insertNoIBeacon(Long ts, String exId, String tagId, int rssi, int tagPower);

    List<NoIbeacon> selectNoIbeacon();

    /**
     * 高值能耗标签
     * @param energy
     * @param flag
     * @param power
     * @param id
     */
    void saveHighEnergyTag(int energy, int flag, int power, String id);
}
